package com.example.demo2.controller;

import cn.hutool.core.collection.ListUtil;
import com.alibaba.excel.util.ListUtils;
import com.example.demo2.common.Result;
import com.example.demo2.entity.Comment;
import com.example.demo2.service.CommentService;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/comment")
public class CommentController {
    @Autowired
    private CommentService commentService;

    @PostMapping
    public Result save(@RequestBody Comment comment) {
        boolean save = commentService.save(comment);
        if (save) {
            return Result.success(save);
        } else {
            return Result.error("-1", save);
        }
    }

    @GetMapping("/all")
    public Result SelectALl() {
        List<Comment> list = commentService.list();
        if (list != null) {
            return Result.success(list);
        } else {
            return Result.error("-1", list);
        }
    }

    @GetMapping("/getALlByForeignId")
    public Result list(@RequestParam Integer foreignId) {
//        方法一
//        List<Comment> allComment = commentService.getALlByForeignId(foreignId);//查询同个商品的所有评论
//        List<Comment> rateList = new ArrayList<>(); //存放所有二级评论
//        List<Comment> rateList2 = new ArrayList<>(); //存放一级评论的所有二级评论
//        List<Double> rateList3 = new ArrayList<>();//存放同个商品的所有打分
//        HashMap<String, Object> map = new HashMap<>();
//        double sum = 0;//打分总和
//        allComment.forEach(item -> {
//            if (item.getRate() != 0) {
//                rateList3.add(item.getRate());
//            }
//            if (item.getPid() != null) { //遍历有pid的评论，然后把他添加到二级评论数组
//                rateList.add(item);
//            }
//        });
//        allComment.forEach(item -> {
//            rateList.forEach(items -> {
//                if (item.getUserId() == items.getPid()) {
//                    rateList2.add(items);
//                    item.setChildren(rateList2);
//                }
//            });
//
//        });
//        for (int i = 0; i < rateList3.size(); i++) {
//            sum += rateList3.get(i);
//        }
//        double avgRate = sum / rateList3.size();
//        map.put("rate", avgRate);
//        map.put("list", allComment);
//        return Result.success(map);
//
//        方法二 高阶函数
        Map<String, Object> map = commentService.getALlByForeignId2(foreignId);//查询同个商品的所有评论
        return Result.success(map);
    }
}
